package chapter07

/**
 * 集合常用函数
 * 简单计算函数
 */
object Test13_SimpleFunction {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 4, 8, 5, -3)

    val list2 = List(("a", 5), ("b", 1), ("c", 8), ("d", 2), ("e", -3), ("f", 4))

    //1、求和
    var sum = 0
    for (elem <- list) {
      sum += elem
    }
    println(sum)
    println(list.sum)

    //2、求乘积

    println(list.product)

    //3、最大值
    println(list.max)

    println(list2.maxBy((tuple: (String, Int)) => tuple._2))
    //拿第二个元素
    println(list2.maxBy(_._2))

    //4、最小值
    println(list.min)
    println(list2.minBy(_._2))

    //5、排序
    println("排序")
    // 5.1 sorted
    val sortedList = list.sorted
    println(sortedList)

    println("从大到小逆序排序")
    println(list.sorted.reverse)

    //传入隐式参数
    println(list.sorted(Ordering[Int].reverse))
    println(list2.sorted)

    //5.2 sortBy  //Ordering[Int].reverse 反过来的
    println(list2.sortBy(_._2))
    println(list2.sortBy(_._2)(Ordering[Int].reverse))


    //5.3 sortWith //从小到大排列
    println(list.sortWith((a: Int, b: Int) => {
      a < b
    }))

    //小于排序
    println(list.sortWith(_ < _))

    //大于排序
    println(list.sortWith(_ > _))


  }
}
